import axios from 'axios'
import { ElMessage } from 'element-plus'
import useToken from '@/stores/token'
import router from '@/router'
const service = axios.create({
        // 初始化参数
        baseURL: '/api',
        timeout: 15000 // request timeout
    }) // service和axios的功能一摸一样

//请求拦截器
service.interceptors.request.use((config) => {
    const { token } = useToken()
    // console.log(token,77777);
    if (token) {
      config.headers.Authorization = token
    }
    return config
  },
  (error) => Promise.reject(error)
)
// 响应拦截器- 数据获取到之后-  >then之前
// 1. 成功  2. 失败
service.interceptors.response.use(
    (response) => {
        if (response.data instanceof Blob) return response.data
        const { code, errorMessage } = response.data // axios默认加了一层data // localStorage.setItem('token',JSON.stringify(data.token))
        if (code) {
            // 表示执行成功
            return response.data // 返回需要的业务数据
        } // 提示消息
        ElMessage({
                showClose: true,
                message: errorMessage,
                type: 'error'
            }) // 报错
        return Promise.reject(new Error(errorMessage))
    },
    (error) => {
        if (error.response.status === 401) {
            // 此时说明token超时了- 超时和没有token是没有任何区别的
            const { removeToken } = useToken()
            removeToken() // 删除token // 回到登录
            router.push('/login')
        }
        Promise.reject(error)
    }
)
export default service // 导出工具